package code

import "fmt"

func Pointer() {
	var a int = 10
	var p *int = &a
	*p = 20
	fmt.Println(a)
}

func Pointer1() {
	// 声明指针 此时a为nil
	var a *int
	old := 10
	// 指针赋值 此时指针可以操作
	a = &old
	fmt.Printf("打印a的值是一个地址:%v \n", a)
	// 如果想要获取指针指向的值, 需要使用*操作符
	fmt.Println("获取指针指向的值: ", *a)
	// 修改a的值, 则old的值也会变
	*a = 20
	fmt.Printf("old的值: %d \n", old)
}

func Pointer2() {
	// 声明指针 此时a为nil, 赋值会报错
	// var a *ints
	// *a = 10
	// 初始化后的内存空间 其值为对应类型的零值
	a := new(int)
	*a = 10
	fmt.Println(*a)
}
